package cn.org.hentai.jtt1078.server;

import io.netty.channel.Channel;
import org.apache.commons.collections.map.HashedMap;

import java.util.Map;

/**
 * 会话管理器
 * Created by 赵朝阳 on 2024/1/17.
 */
public final class SessionManager
{

    private static final Map<String, Object> mappings = new HashedMap();

    public static void init()
    {
        // ...
    }

    /**
     * 从会话管理器中获取与指定通道（Channel）和键（key）相关联的值。
     * @param channel 要获取会话信息的通道
     * @param key 要检索的会话信息的键
     * @return
     * @param <T>
     */
    public static <T> T get(Channel channel, String key)
    {
        return (T) mappings.get(channel.id().asLongText() + key);
    }

    /**
     * 用于将指定的值（value）与指定的通道（channel）和键（key）关联起来，并将它们存储在会话管理器中
     * @param channel 要关联会话信息的通道
     * @param key 会话信息的键
     * @param value 要存储的会话信息的值
     */
    public static void set(Channel channel, String key, Object value)
    {
        mappings.put(channel.id().asLongText() + key, value);
    }

    /**
     * 用于检查会话管理器中是否包含与指定通道和键相关联的值
     * @param channel 要检查的通道
     * @param key 要检查的键
     * @return 如果会话管理器包含与指定通道和键相关联的值，则返回 true，否则返回 false
     */
    public static boolean contains(Channel channel, String key)
    {
        return mappings.containsKey(channel.id().asLongText() + key);
    }
}